[iOS] iOS Core Audio 入門 # 1 概要編
はじめに
本シリーズ「iOS Core Audio」ではiOS 2.0からiOSに標準搭載されている「CoreAudio」と呼ばれるオーディオ処理用のソフトウェアインターフェイスを扱っていきます。
今回はCore Audioのフレームワーク群の概要を見ていきます。
目次
- Core Audio ?
- Core Audioを構成するフレームワーク/サービス
- Inter-App Audio
- 実機とシミュレータ
- 外部ハードウェアとの連携
- iOSのバージョンとCore Audio
- まとめ
Core Audio ?
「Core Audio」はオーディオ処理用のフレームワークの総称であり、アプリ内でオーディオを再生、録音、ミックス、生成することをサポートします。MIDIコンテンツを扱ったり、他のアプリにオーディオやMIDIをストリーミングしたりすることも可能です。
多数のフレームワークが用意されており、簡易的な効果音の再生から波形レベルの操作まで行うことができます。高いパフォーマンスと低レイテンシを実現するオーディオエンジンがOSの標準として備わっているということであり、AppStoreには電子楽器やシーケンサー、DAWなどの音楽アプリが多数公開されています。
- 関連するドキュメント
Core Audioを構成するフレームワーク/サービス
Core Audioを構成するフレームワーク・サービスには以下の様なものがあります。
- AV Foundation Framework
- Media Player Framework
- Audio Toolbox Framework
- OpenAL Framework
- Audio Unit Framework
- Core Media Framework
- Core MIDI Framework
- Media Toolbox Framework
- Core Audio Framework
AV Foundation Framework
- 多くのアプリケーションで必要となるコントロールを使用してオーディオを再生可能
- インターフェイスはObjective-C
- オーディオだけでなくビデオなどのメディアも扱える
- アプリ、アプリ間、デバイスレベルでのオーディオの振る舞いを管理するAVAudioSessionを含む
- 関連するドキュメント
- 関連する公式のサンプルプロジェクト
Media Player Framework
- ムービー、音楽、ポッドキャスト、オーディオブックの再生用の機能を提供
- iPod libraryへのアクセスも提供(read-only) デスクトップのiTunesから同期されたオーディオベースのメディアアイテムを再生・検索できる
- 関連するドキュメント
Audio Toolbox Framework
- 録音、再生、およびストリームの解析のためのアプリケーションレベルのサービスを提供
- iOSではAudioSessionを管理するための追加のインターフェイスを提供している(Mac版にはない)
- 関連するドキュメント
Services
サービス名 | 内容 | 関連公式ドキュメント | 関連公式サンプルプロジェクト |
---|---|---|---|
Audio Converter Services | オーディアデータを変換するためのサービス。異なるPCMフォーマット間、PCM-圧縮フォーマット間の変換を行うことができる。 | ||
Audio File Services | ディスクまたはメモリ上の様々なオーディオデータを読み書きするためのCのインターフェースを提供。 | ||
Audio File Stream Services | ストリーミング・オーディオの解析機能を提供する。 | ||
Audio Format Services | オーディオ形式とコーデックに関する情報を取得するためのCインタフェースを提供する。 | ||
Audio Queue Services | オーディオの再生や録音に使用できるソフトウェアオブジェクトである"audio queue"を提供。インターフェイスはC。 | Audio Queue Services Programming Guide | |
Audio Session Services | アプリが再生するオーディオの振る舞いを指定するためのサービスだが、iOS 7.0で非推奨になった。代わりにAV Foundation FrameworkのAVAudioSessionを使うようになっている。(What's New in iOS - Deprecated APIs) | Audio Session Programming Guide | |
Audio Unit Processing Graph Services | 複数のAudioUnitの配置、それぞれのAudioUnitの入力出力の接続、インプット用のコールバックを提供する。 | Audio Unit Hosting Guide for iOS | |
Extended Audio File Services | Audio File ServicesとAudio Converter Servicesを組み合わせて、簡単にオーディオファイルの読み書きができるようにしたサービス。 | ||
System Sound Services | ユーザーの操作に対して音を出したり、バイブレーションを発動させたりするためのC言語の関数群を提供。 |
OpenAL Framework
- OpenAL規格の実装を提供
- 関連するドキュメント
- 関連する公式のサンプルプロジェクト
Audio Unit Framework
- 「オーディオユニット」と呼ばれるオーディオ処理用のプラグインを使用するためのインターフェースを提供
- iOSではAppleが提供しているオーディオユニットしか使用できない(Macでは第三者が作成したものも使用できる)
- 関連するドキュメント
- 関連する公式のサンプルプロジェクト
Core Media Framework
- オーディオビジュアルメディアを再生/管理するための低レベルのCインタフェースを提供
- オーディオおよびビデオコンテンツの作成及び再生をより正確に制御する必要がある開発者向け
- 関連するドキュメント
Core MIDI Framework
- MIDIキーボードやシンセサイザーなどのデバイスと通信するためのAPIを提供
- 有線あるいは無線で接続できる。
- 関連するドキュメント
Media Toolbox Framework
- "audio tap"インターフェイスへのアクセスを提供
- 関連する公式のサンプルプロジェクト
Core Audio Framework
- Core Audio全体で使用されるオーディオデータ型を定義
- (Core Audioの他のサービスを包括するフレームワークではない)
- 関連するドキュメント
Inter-App Audio
「Inter-App Audio」はiOS 7で追加されました。対応アプリ同士でオーディオやMIDI、現在時間などをやりとりすることができます。 例えば、DAW(Digital Audio Workstation)アプリケーションと外部アプリ(エフェクターやシンセシンセサイザーなど)を連携することで複数のアプリを連携して作曲することができます。
実装的には、Audio Unit Frameworkのアップデートによって「Inter-App Audio」を実現している形になっているようです。 アプリのオーディオを他のアプリに提供するには、"AURemoteIO"オーディオユニットを他のアプリから見えるように公開します。 他のアプリのオーディオを利用するには、iOS 7のオーディオコンポーネント·ディスカバリ·インタフェースを使用します。
また、実機で動かすには証明書の設定でInter-App Audioを利用可能にする必要があります。
- 関連するドキュメント
- 関連する公式のサンプルプロジェクト
実機とシミュレータ
実機とシミュレータで動作が異なる部分があります
- iOSシミュレータで動作しないサービス
- Audio Session Services
- AVAudioSession API
- iPodライブラリアクセス
外部ハードウェアとの連携
iOSに対応したMIDIコントローラやオーディオインターフェース等が各社から発売されており、それらの機器と連携するアプリを開発できます。
外部ハードウェアとの連携については別記事で書いてみたいと思います。
iOSのバージョンとCore Audio
iOS 4.0以降の機能追加は以下のような感じになっています。
- iOS 7.1
- Support for External Media Players (CarPlay関連のようです)
- iOS 7.0
- Inter-App Audioの追加
- Media Player / AV Foundation Frameworkの機能強化
- Audio Toolbox framework内のAudio Session APIの非推奨化
- iOS 6.0
- Audio UnitのComponentの追加
- Media Player / Core Media / AV Foundation Frameworkの機能強化
- iOS 5.0
- Audio UnitのComponentの追加
- Media Player / AV Foundation / AudioToolbox Frameworksの機能強化
- iOS 4.3
- AV Foundationの機能強化
- Media Player / Audio Unit / Audio Toolbox Frameworksの機能強化
- iOS 4.2
- Core MIDI frameworkの追加
- Media Player Frameworkの機能強化
- AirPlay(オーディオ再生)の追加
- iOS 4.1
- AV Foundationの機能強化
- iOS 4.0
- Core Media Frameworkの追加
- AV Foundationの機能強化
- 関連するドキュメントWhat's New in iOS
まとめ
今回はCore Audioのフレームワーク群の概要を見ていきました。以下のようなタイプのアプリケーションの開発に活用できそうです。
- 一般的なツールアプリに効果音を追加(ユーザーの操作に対するフィードバックとして)
- iPodライブラリと連携したアプリ
- インターネットラジオ/ポッドキャストアプリ
- ICレコーダーアプリ
- 音を主体としたゲーム
- シンセサイザー、ドラムマシン、サンプラー、DAW、シーケンサーなどの作曲アプリ
今後は各フレームワークの機能を試していきたいと思います。